﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RBAC.DAL.Entities
{
    [Serializable]
    public class Role : BaseEntity
    {
        public virtual String RoleCode { get; set; }
        public virtual String RoleName { get; set; }
        public virtual String Description { get; set; }
        //public virtual int RoleStatus { get; set; }
        public virtual IList<Permission> Permissions { get; set; }
        public virtual int? ProjectId { get; set; }
        /* note 2 T4 ถ้า attribute type เป็น virtual IList type ต้อง
          สร้าง contructor เพื่อป้องกัน Add list ที่เป็น null */
        public Role()
        {
            Permissions = new List<Permission>();

        }

        /* note 2 T4 AddEvaluation และ RemoveEvaluation method จะสร้างก็ต่อเมื่อ
           มี type ที่เป็น virtual IList ***ที่ class ภายใน IList<class??> มี class นี้ เป็น attribute ด้วย */
        public virtual void AddPermissions(Permission arg)
        {
            //arg.Role = this;
            Permissions.Add(arg);
        }
    }
}
